/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package org.cip.esymons.tesoreria.beans;

import org.cip.esymons.general.util.ControladorAbstracto;
import java.util.List;
import org.cip.esymons.colegiatura.be.Colegiado;
import org.cip.esymons.general.be.PersonaJuridica;
import org.cip.esymons.general.be.PersonaNatural;
import org.cip.esymons.general.be.Solicitante;
import org.cip.esymons.tesoreria.bc.ColegiadoDelegate;
import org.cip.esymons.tesoreria.bc.SolicitanteBusquedaDelegate;

/**
 *
 * @author Ingrid Capuñay
 */
public class BusquedaPersonasController extends ControladorAbstracto {

    private SolicitanteBusquedaDelegate delegadoSolBus;
    private ColegiadoDelegate colegiadoDelegate;
    private String tipoPersonaSeleccionada;
    private String dniPerNat;
    private String apeMatPerNat;
    private String apePatPerNat;
    private String nomPerNat;
    private String rucCliente;
    private String razsocPerJur;
    private List<PersonaNatural> listaPersonaNatural;
    private List<PersonaJuridica> listaPersonaJuridica;
    private Solicitante solicitanteSele;
    private int controladorSolicitante;//sirve para saber de donde se le esta llamando (que controlador lo llama)
    private boolean comboTipoHabilitado = true;
    private boolean buscarSoloColegiados = false;

    public BusquedaPersonasController() {
        delegadoSolBus = new SolicitanteBusquedaDelegate();
        colegiadoDelegate = new ColegiadoDelegate();
        tipoPersonaSeleccionada = "NA";
        dniPerNat = null;
        apeMatPerNat = null;
        apePatPerNat = null;
        nomPerNat = null;
        rucCliente = null;
        razsocPerJur = null;
    }

    public List<PersonaNatural> getListaPersonasNaturales() {
        listaPersonaNatural = delegadoSolBus.buscarPerNatural(dniPerNat, apePatPerNat, apeMatPerNat, nomPerNat, rucCliente, buscarSoloColegiados);
        return listaPersonaNatural;
    }

    public List<PersonaJuridica> getListaPersonasJuridicas() {
        listaPersonaJuridica = delegadoSolBus.buscarPerJuridica(rucCliente, razsocPerJur, null);
        return listaPersonaJuridica;
    }

    public String volver(){
        if (controladorSolicitante == 1 || controladorSolicitante == 6 ) {
            if(controladorSolicitante == 1){
                return "nuevo_documentoPago";
            }else{
                return "regresar_deudaCuoBene";
            }
        }
        if (controladorSolicitante == 2 || controladorSolicitante == 3) {
            if (controladorSolicitante == 3) {
                return "Buscar_CuentaBancaria";
            } else {
                return "Nueva_CuentaBancaria";
            }
        }
        //para fondo mortuorio
        if (controladorSolicitante == 4 || controladorSolicitante == 5 ) {
            if(controladorSolicitante == 4){
                return "nuevo_fondoMortuo";
            }else{
                return "regresar_agregarBenef";
            }

        }
        //para exoneracion
        if (controladorSolicitante == 7  ) {
            return "nueva_exoneracion";
        }
        //para fraccionamiento
        if (controladorSolicitante == 8  ) {
            return "nuevo_fraccionamiento";
        }
        //para AutorizacionPagoParcial
        if (controladorSolicitante == 9  ) {
            return "nueva_AutorizacionPagoParcial";
        }

        //para Voucher de Egreso
        if (controladorSolicitante == 10 ) {
            return "nuevo_VoucherEgreso";
        }
        return null;
    }

    public String seleccionar() {
        if (controladorSolicitante == 1 || controladorSolicitante == 6 ) {
            EjecutarPagoController epc = (EjecutarPagoController) getBean("ejecutarPagoController");
            if(controladorSolicitante == 1){
                if (tipoPersonaSeleccionada.equals("NA")) {
                    epc.setSolicitanteSeleccionado(solicitanteSele);
                    epc.setPersonaSeleccionada((PersonaNatural) solicitanteSele);
                } else {
                    epc.setSolicitanteSeleccionado(solicitanteSele);
                    epc.setEmpresaSeleccionada((PersonaJuridica) solicitanteSele);
                }
                return "nuevo_documentoPago";
            }else{
                if (tipoPersonaSeleccionada.equals("NA")) {
                    epc.getBeneficiarioSeleccionado().setPersonaNatural((PersonaNatural)solicitanteSele);                    
                } else {
                    epc.getBeneficiarioSeleccionado().setPersonaNatural(null);
                }
                return "regresar_deudaCuoBene";
            }
        }
        if (controladorSolicitante == 2 || controladorSolicitante == 3) {
            CuentaBancariaController cbc = (CuentaBancariaController) getBean("cuentaBancariaController");
            if (tipoPersonaSeleccionada.equals("NA")) {
                cbc.setPersonaSeleccionada((PersonaNatural) solicitanteSele);
                //         cbc.setSolicitanteSeleccionado(solicitanteSele);

            } else {
                cbc.setEmpresaSeleccionada((PersonaJuridica) solicitanteSele);
                //    cbc.setSolicitanteSeleccionado(solicitanteSele);
            }
            if (controladorSolicitante == 3) {
                return "Buscar_CuentaBancaria";
            } else {
                return "Nueva_CuentaBancaria";
            }
        }
        //para fondo mortuorio
        if (controladorSolicitante == 4 || controladorSolicitante == 5 ) {
            FondoMortuorioController fmc = (FondoMortuorioController) getBean("fondoMortuorioController");
            if(controladorSolicitante == 4){
                if (tipoPersonaSeleccionada.equals("NA")) {
                    Colegiado colegiado = colegiadoDelegate.find(solicitanteSele.getSolCodigo());
                    if (colegiado != null) {
                        fmc.setColegiadoEncontrado(colegiado);
                        fmc.setDnioNroCipIngresado(colegiado.getColnumeroCip());
                    } else {
                        fmc.setColegiadoEncontrado(null);
                    }
                } else {
                    fmc.setColegiadoEncontrado(null);
                }
                return "nuevo_fondoMortuo";
            }else{
                if (tipoPersonaSeleccionada.equals("NA")) {
                    fmc.setDniIngresado(solicitanteSele.getNumeroDNI());
                    fmc.getBeneficiarioFondoMortuorio().setPersonaBeneficiaria((PersonaNatural)solicitanteSele);
                }
                return "regresar_agregarBenef";
            }
            
        }
        //para exoneracion
        if (controladorSolicitante == 7  ) {
            ExoneracionController ec = (ExoneracionController) getBean("exoneracionController");
            if (tipoPersonaSeleccionada.equals("NA")) {
                Colegiado colegiado = colegiadoDelegate.find(solicitanteSele.getSolCodigo());
                if (colegiado != null) {
                    ec.setSolicitanteSeleccionado(colegiado);
                } else {
                    ec.setSolicitanteSeleccionado(null);
                }
            } else {
                ec.setSolicitanteSeleccionado(null);
            }
            return "nueva_exoneracion";
        }
        //para fraccionamiento
        if (controladorSolicitante == 8  ) {
            FraccionamientoController fc = (FraccionamientoController) getBean("fraccionamientoController");
            if (tipoPersonaSeleccionada.equals("NA")) {
                fc.setSolicitanteSeleccionado(solicitanteSele);
            } else {
                fc.setSolicitanteSeleccionado(null);
            }
            return "nuevo_fraccionamiento";
        }
        //para AutorizacionPagoParcial
        if (controladorSolicitante == 9  ) {
            AutorizacionPagoParcialController ac = (AutorizacionPagoParcialController) getBean("autorizacionPagoParcialController");
            if (tipoPersonaSeleccionada.equals("NA")) {
                ac.setDnioNroCip(solicitanteSele.getNumeroDNI());
                ac.setTipoBusquedaDNICIP(0);
                ac.buscarPersona();
            } else {
                ac.setSolicitanteSeleccionado(null);
            }
            return "nueva_AutorizacionPagoParcial";
        }       

        //para Voucher de Egreso
        if (controladorSolicitante == 10 ) {
            VoucherEgresoController ac = (VoucherEgresoController) getBean("voucherEgresoController");
            if (tipoPersonaSeleccionada.equals("NA")) {
                ac.setSolicitanteSeleccionado(solicitanteSele);
            } else {
                ac.setSolicitanteSeleccionado(null);
            }
            return "nuevo_VoucherEgreso";
        }
        return null;
    }

    /**
     * @return the tipoPersonaSeleccionada
     */
    public String getTipoPersonaSeleccionada() {
        return tipoPersonaSeleccionada;
    }

    /**
     * @param tipoPersonaSeleccionada the tipoPersonaSeleccionada to set
     */
    public void setTipoPersonaSeleccionada(String tipoPersonaSeleccionada) {
        this.tipoPersonaSeleccionada = tipoPersonaSeleccionada;
    }

    /**
     * @return the dniPerNat
     */
    public String getDniPerNat() {
        return dniPerNat;
    }

    /**
     * @param dniPerNat the dniPerNat to set
     */
    public void setDniPerNat(String dniPerNat) {
        this.dniPerNat = dniPerNat;
    }

    /**
     * @return the apeMatPerNat
     */
    public String getApeMatPerNat() {
        return apeMatPerNat;
    }

    /**
     * @param apeMatPerNat the apeMatPerNat to set
     */
    public void setApeMatPerNat(String apeMatPerNat) {
        this.apeMatPerNat = apeMatPerNat;
    }

    /**
     * @return the apePatPerNat
     */
    public String getApePatPerNat() {
        return apePatPerNat;
    }

    /**
     * @param apePatPerNat the apePatPerNat to set
     */
    public void setApePatPerNat(String apePatPerNat) {
        this.apePatPerNat = apePatPerNat;
    }

    /**
     * @return the nomPerNat
     */
    public String getNomPerNat() {
        return nomPerNat;
    }

    /**
     * @param nomPerNat the nomPerNat to set
     */
    public void setNomPerNat(String nomPerNat) {
        this.nomPerNat = nomPerNat;
    }

    /**
     * @return the razsocPerJur
     */
    public String getRazsocPerJur() {
        return razsocPerJur;
    }

    /**
     * @param razsocPerJur the razsocPerJur to set
     */
    public void setRazsocPerJur(String razsocPerJur) {
        this.razsocPerJur = razsocPerJur;
    }

    /**
     * @return the rucCliente
     */
    public String getRucCliente() {
        return rucCliente;
    }

    /**
     * @param rucCliente the rucCliente to set
     */
    public void setRucCliente(String rucCliente) {
        this.rucCliente = rucCliente;
    }

    public String buscar() { /* falta implementar este metodo y llamar a getListarPersonas..... */

        return null;
    }

    /**
     * @return the controladorSolicitante
     */
    public int getControladorSolicitante() {
        return controladorSolicitante;
    }

    /**
     * @param controladorSolicitante the controladorSolicitante to set
     */
    public void setControladorSolicitante(int controladorSolicitante) {
        this.controladorSolicitante = controladorSolicitante;
    }

    /**
     * @return the solicitanteSele
     */
    public Solicitante getSolicitanteSele() {
        return solicitanteSele;
    }

    /**
     * @param solicitanteSele the solicitanteSele to set
     */
    public void setSolicitanteSele(Solicitante solicitanteSele) {
        this.solicitanteSele = solicitanteSele;
    }

    /**
     * @return the comboTipoHabilitado
     */
    public boolean isComboTipoHabilitado() {
        return comboTipoHabilitado;
    }

    /**
     * @param comboTipoHabilitado the comboTipoHabilitado to set
     */
    public void setComboTipoHabilitado(boolean comboTipoHabilitado) {
        this.comboTipoHabilitado = comboTipoHabilitado;
    }

    /**
     * @return the buscarSoloColegiados
     */
    public boolean isBuscarSoloColegiados() {
        return buscarSoloColegiados;
    }

    /**
     * @param buscarSoloColegiados the buscarSoloColegiados to set
     */
    public void setBuscarSoloColegiados(boolean buscarSoloColegiados) {
        this.buscarSoloColegiados = buscarSoloColegiados;
    }
}
